import pandas as pd

'''
1. pandas读取excel方法介绍
    （1）io：文件的路径
    （2）sheet_name：读取的工作表的名称
    （3）header：指定哪几行做列名
    （4）names：自定义列名
    （5）index_col：用作索引的列
    （6）usecols：指定读取的列
    （7）squeeze：一列数据时，返回Series还是DataFrame
    （8）skiprows：跳过指定行
    （9）nrows：需要读取的行数
    （10）skipfooter：跳过末尾n行
    （11）dtype：指定元素类型
2. 访问Excel的行列元素
    （1）读取行列索引
    （2）读取行列元素
    （3）读取某个数据元素
'''


def read_excel(path):
    '''
    读取excel整个表格API
    '''
    # 1、sheet_name：读取的工作表的名称
    # 可以是整型数字、列表名，如果读取多个sheet，也可以是它们组成的列表。
    # 整形数字是以0为起始点
    # data_frame = pd.read_excel(path, sheet_name=0)
    # data_frame = pd.read_excel(path, sheet_name='Sheet2')
    # 2、读取前2行,默认header为0，如果设置为[0,1]，则表示将前两行作为多重索引。
    # print(data_frame.head(2))
    # 3、names：自定义列名,如果缺少列名，可以使用names指定列名字，会替代原来的列表头。
    # 但是要注意的是，长度必须和excel的列大小相同。
    '''
       员工1  员工2  员工3  员工4
    0  1月    1    2    3
    1  2月    4   10    6
    '''
    # data_frame = pd.read_excel(path, sheet_name='Sheet2', names=['员工1','员工2','员工3','员工4'])
    # print(data_frame.head(2))
    # print(data_frame.columns)
    # 4、index_col：用作索引的列
    # 可以是某列的名字，如index_col=‘月份’，也可以是整型数字或列表，如index_col=0或index_col=[0,1]
    '''
         张三  李四  王五
    月份            
    1月   1   2   3
    2月   4  10   6
    '''
    # data_frame = pd.read_excel(path, sheet_name='Sheet2', index_col='月份')
    # print(data_frame.head(2))
    # 5、usecols：指定读取的列
    # 列从0开始，可以是列表，如：[0,2]，也可以使用Excel的列名，如’A’,'B’等字母
    '''
       月份  张三
    0  1月   1
    1  2月   4
    '''
    # data_frame = pd.read_excel(path, sheet_name='Sheet2', usecols=[0, 1])
    # 使用Excel字母的读取方式：
    # data_frame = pd.read_excel(path, sheet_name='Sheet2', usecols='A,C')
    '''
       月份  李四
    0  1月   2
    1  2月  10
    '''
    # print(data_frame.head(2))
    '''
    ==========================分割线==========================
    读取指定的行和列
    '''
    # 6、读取行列索引
    data = pd.read_excel(path, sheet_name='Sheet2')
    # 使用index和columns分别访问行和列的索引。
    print(list(data.index))
    print(list(data.columns))
    print('--------------------分割线-----------------------------------')
    # 使用index和columns访问指定的索引
    print(list(data.index[1:3]))  # [1, 2]
    print(data.columns[1])  # 张三
    print(list(data.columns[1:3]))  # ['张三', '李四']
    print('--------------------分割线,读取列数据-----------------------------------')
    print(data['张三'])  # 按列名取列
    print('----')
    print(data.张三)  # 按列名取列
    print('----')
    print(data[['张三', '王五']])  # 按列名取不连续列数据
    print('----')
    print(data[data.columns[1:4]])  # 按列索引取连续列数据
    print('----')
    print(data.iloc[:, 1])  # 按位置取列，第1列，从0列开始数
    print('----')
    print(data.iloc[:, [1, 3]])  # 按位置取不连续列数据
    print('--------------------分割线,读取行数据-----------------------------------')
    # 7、iloc方法
    print(data[1:3])  # 按行取数据，列索引不算一行
    print('----')
    print(data[data.张三 > 4])  # 按行有条件的取数据，取张三销量大于4的行
    print('----')
    print(data.iloc[1])  # 按行取行数据
    print('----')
    print(data.iloc[1:3])  # 按行取连续数据
    print('----')
    print(data.iloc[[1, 3]])  # 按行取不连续数据
    print('----')
    print(data.iloc[[1, 2, 3], [2, 3]])  # 取部分行部分列数据


import requests
import os


def download_image(image_url, save_path):
    """
    保存图片
    :param image_url:
    :param save_path:
    :return:
    """
    # 创建文件夹
    os.makedirs('img', exist_ok=True)
    response = requests.get(image_url, stream=True)
    if response.status_code == 200:
        try:
            with open(f'img/{save_path}.jpg', 'wb') as f:
                for chunk in response.iter_content(1024):
                    f.write(chunk)
        except FileNotFoundError:
            print(f'文件不存在,imgurl={image_url}  保存路径=img/{save_path}')


if __name__ == '__main__':
    excel_path = 'example.xlsx'
    # df = pd.read_excel(excel_path, sheet_name=1)
    # print(list(df['张三']))
    df = pd.read_excel(excel_path, sheet_name=0)
    df_filter = df[['年龄', '图片']]
    print(df_filter)
    print('------------')
    age_list = df_filter['年龄']
    print(age_list)
    print('------------')
    img_list = df_filter['图片']
    print(img_list)
    print('for each -----------')
    for i in range(len(age_list)):
        age = age_list[i]
        download_image(img_list[i], age)
        print('next>>>>>>')
